perm filename SYSCON.LSP[MAC,LSP]1 blob
sn#613674 filedate 1981-09-21 generic text, type T, neo UTF8
;;; ()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;;; () ()
;;;;() NIL Compiler for the S-1 ()
;;; () ()
;;; ()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;;; () ()
;;; () This file contains code for the S-1 NIL system. ()
;;; () ()
;;; () "We don't call it `NIL' for nothing!" ()
;;; () ()
;;; ()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;;; () ()
;;; () (c) Copyright 1981 Lawrence Livermore Laboratory ()
;;; () This is a read-only file! (All writes reversed.) ()
;;; () ()
;;; ()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;;;
;;;STEELE 08/14/81 14:59 Added header, created history list.
;;;STEELE 08/14/81 14:59 Moved *:FRAME-RETURN-PC to be between
;;; *:FRAME-OLD-FP and *:FRAME-ARGUMENTS.
;;;STEELE 08/14/81 16:19 Put it back where it was -- I was wedged.
;;; Instead, move registers T1 and T2 to be after SQ and before TP.
;;; This improves the procedure call interface.
;;;STEELE 08/14/81 16:35 Put registers T1 and T2 back. In other
;;; words,we are back where we started at the beginning of this history.
;;; Sorry about that.
;;;BROOKS 08/19/81 14:46 Moved all the special pieces of code in
;;; the systemic quantities vector to have indices of 32. onwards.
;;; Since they are always referenced with an indirect jump there is
;;; no advantage to short offsets.
;;;STEELE 08/21/81 12:55 Added three addresses to SQ vector for routines
;;; to handle RETURN-VECTOR and RETURN-LIST.
;;;BROOKS 08/21/81 15:46 Changed all the procedure and stack values to reflect
;;; the fact that procedure pointers point to the 39th word of the object.
;;;BROOKS 08/24/81 01:20 Added in constants for rounding modes for division.
;;;*History*
;;; Eventually use DEFCONST.
(DEFMACRO CONSTANT (NAME VALUE &OPTIONAL DOCUMENTATION)
`(PROGN 'COMPILE
(DECLARE (SPECIAL ,NAME))
(COND ((BOUNDP ',NAME)
(OR (EQUAL ,NAME ,VALUE)
(FORMAT MSGFILES
'"~%;Inconsistent values (old ~S, new ~S) for ~S."
,NAME
',VALUE
',NAME))))
(SETQ ,NAME ,VALUE)
,@(AND DOCUMENTATION
`((DEFPROP ,NAME ,DOCUMENTATION DOCUMENTATION)))
(DEFPROP ,NAME T CONSTANT)))
;;;; Data types in type field of an S-1 pointer.
(CONSTANT *:DTP-POS-FIXNUM 0.)
(CONSTANT *:DTP-GATE-POINTER 1.)
(CONSTANT *:DTP-UNDEFINED 2.)
(CONSTANT *:DTP-S-1-SELF-RELATIVE 3.)
(CONSTANT *:DTP-S-1-RING-0 4.)
(CONSTANT *:DTP-S-1-RING-1 5.)
(CONSTANT *:DTP-S-1-RING-2 6.)
(CONSTANT *:DTP-S-1-RING-3 7.)
(CONSTANT *:DTP-GC 8.)
(CONSTANT *:DTP-NAMED-VECTOR 10.)
(CONSTANT *:DTP-NAMED-ARRAY 11.)
(CONSTANT *:DTP-HALF-FLONUM 12.)
(CONSTANT *:DTP-SINGLE-FLONUM 13.)
(CONSTANT *:DTP-DOUBLE-FLONUM 14.)
(CONSTANT *:DTP-TETRA-FLONUM 15.)
(CONSTANT *:DTP-HALF-COMPLEXNUM 16.)
(CONSTANT *:DTP-SINGLE-COMPLEXNUM 17.)
(CONSTANT *:DTP-DOUBLE-COMPLEXNUM 18.)
(CONSTANT *:DTP-TETRA-COMPLEXNUM 19.)
(CONSTANT *:DTP-EXTENDED-NUMBER 20.)
(CONSTANT *:DTP-CODE 21.)
(CONSTANT *:DTP-PROCEDURE 22.)
(CONSTANT *:DTP-ARRAY 23.)
(CONSTANT *:DTP-VECTOR 24.)
(CONSTANT *:DTP-SPECIAL-VECTOR 25.)
(CONSTANT *:DTP-STRING 26.)
(CONSTANT *:DTP-CHARACTER 27.)
(CONSTANT *:DTP-SYMBOL 28.)
(CONSTANT *:DTP-PAIR 29.)
(CONSTANT *:DTP-NULL 30.)
(CONSTANT *:DTP-NEG-FIXNUM 31.)
(CONSTANT *:NUMBER-OF-DATA-TYPES 32.)
(CONSTANT *:SYMBOL-VALUE-CELL 0.)
(CONSTANT *:SYMBOL-PROPERTY-LIST 1.)
(CONSTANT *:SYMBOL-FUNCTION-CELL 2.)
(CONSTANT *:SYMBOL-PRINT-NAME 3.)
(CONSTANT *:SYMBOL-PACKAGE 4.)
(CONSTANT *:SYMBOL-BIND-COUNT 5.)
(CONSTANT *:SYMBOL-SIZE 6.)
(CONSTANT *:EXTENDED-NUMBER-SUBTYPE -2)
(CONSTANT *:EXTENDED-NUMBER-IMPOSSIBLE -1)
(CONSTANT *:EXTENDED-NUMBER-BIGNUM 0)
(CONSTANT *:EXTENDED-NUMBER-BIGFLOAT 1)
(CONSTANT *:EXTENDED-NUMBER-BIGCOMPLEX 2)
(CONSTANT *:EXTENDED-NUMBER-RATIONAL 3)
(CONSTANT *:VECTOR-SUBTYPE -2.)
(CONSTANT *:VECTOR-SUBTYPE-BITS 511.)
(CONSTANT *:VECTOR-BYTE-LENGTH (* (EXPT 2. 18.) 511.))
(CONSTANT *:VECTOR-BYTE-SHIFT -18.)
(CONSTANT *:VECTOR-TYPE-BITS 2.)
(CONSTANT *:VECTOR-TYPE-QW-FIXNUM 3.)
(CONSTANT *:VECTOR-TYPE-HW-FIXNUM 5.)
(CONSTANT *:VECTOR-TYPE-SW-FIXNUM 6.)
(CONSTANT *:VECTOR-TYPE-DW-FIXNUM 7.)
(CONSTANT *:VECTOR-TYPE-SIGNED-BYTE-FIXNUM 9.)
(CONSTANT *:VECTOR-TYPE-UNSIGNED-BYTE-FIXNUM 10.)
(CONSTANT *:VECTOR-TYPE-HALF-FLONUM 11.)
(CONSTANT *:VECTOR-TYPE-SINGLE-FLONUM 13.)
(CONSTANT *:VECTOR-TYPE-DOUBLE-FLONUM 14.)
(CONSTANT *:VECTOR-TYPE-TETRA-FLONUM 15.)
(CONSTANT *:VECTOR-TYPE-HALF-COMPLEXNUM 17.)
(CONSTANT *:VECTOR-TYPE-SINGLE-COMPLEXNUM 18.)
(CONSTANT *:VECTOR-TYPE-DOUBLE-COMPLEXNUM 19.)
(CONSTANT *:VECTOR-TYPE-TETRA-COMPLEXNUM 21.)
(CONSTANT *:VECTOR-TYPE-HALF-COMPLEXINT 22.)
(CONSTANT *:VECTOR-TYPE-SINGLE-COMPLEXINT 23.)
(CONSTANT *:VECTOR-TYPE-BYTE-SIZE-TABLE
'(() () () 1. () ;0-4
2. 4. 8. () ;5-8
() () 2. () ;9-12
4. 8. 16. () ;13-16
4. 8. 16. () ;17-20
32. 4. 8.)) ;21-23
(CONSTANT *:ARRAY-SUBTYPE -2.)
(CONSTANT *:ARRAY-AREF-CODE 0.)
(CONSTANT *:ARRAY-ASET-CODE 1.)
(CONSTANT *:ARRAY-DATA 2.)
(CONSTANT *:ARRAY-TYPE-POINTER 0.)
(CONSTANT *:ARRAY-TYPE-STRING 1.)
(CONSTANT *:ARRAY-TYPE-BITS 2.)
(CONSTANT *:ARRAY-TYPE-QW-FIXNUM 3.)
(CONSTANT *:ARRAY-TYPE-HW-FIXNUM 5.)
(CONSTANT *:ARRAY-TYPE-SW-FIXNUM 6.)
(CONSTANT *:ARRAY-TYPE-DW-FIXNUM 7.)
(CONSTANT *:ARRAY-TYPE-SIGNED-BYTE-FIXNUM 9.)
(CONSTANT *:ARRAY-TYPE-UNSIGNED-BYTE-FIXNUM 10.)
(CONSTANT *:ARRAY-TYPE-HALF-FLONUM 11.)
(CONSTANT *:ARRAY-TYPE-SINGLE-FLONUM 13.)
(CONSTANT *:ARRAY-TYPE-DOUBLE-FLONUM 14.)
(CONSTANT *:ARRAY-TYPE-TETRA-FLONUM 15.)
(CONSTANT *:ARRAY-TYPE-HALF-COMPLEXNUM 17.)
(CONSTANT *:ARRAY-TYPE-SINGLE-COMPLEXNUM 18.)
(CONSTANT *:ARRAY-TYPE-DOUBLE-COMPLEXNUM 19.)
(CONSTANT *:ARRAY-TYPE-TETRA-COMPLEXNUM 21.)
(CONSTANT *:ARRAY-TYPE-HALF-COMPLEXINT 22.)
(CONSTANT *:ARRAY-TYPE-SINGLE-COMPLEXINT 23.)
(CONSTANT *:ARRAY-LEADER 3.)
(CONSTANT *:ARRAY-RANK 4.)
(CONSTANT *:ARRAY-DATA-OFFSET 5.)
(CONSTANT *:ARRAY-BYTE-OFFSET 6.)
(CONSTANT *:ARRAY-FILL-POINTER 7.)
(CONSTANT *:ARRAY-LENGTH 8.)
(CONSTANT *:ARRAY-DIMENSIONS 9.)
(CONSTANT *:ARRAY-DIMENSION-LOWER-BOUND 0.)
(CONSTANT *:ARRAY-DIMENSION-UPPER-BOUND 1.)
(CONSTANT *:ARRAY-DIMENSION-WEIGHT 2.)
(CONSTANT *:ARRAY-WORDS-PER-DIMENSION 3.)
(CONSTANT *:PROCEDURE-SUBTYPE -41.)
(CONSTANT *:PROCEDURE-FUNCTION 0.)
(CONSTANT *:PROCEDURE-MACRO 1.)
(CONSTANT *:PROCEDURE-FEXPR 2.)
(CONSTANT *:PROCEDURE-STACK-GROUP 3.)
(CONSTANT *:PROCEDURE-CODE -39.)
(CONSTANT *:PROCEDURE-OLD-CODE -38.)
(CONSTANT *:PROCEDURE-NAME -37.)
(CONSTANT *:PROCEDURE-POINTER-TEMPS -36.)
(CONSTANT *:PROCEDURE-NON-POINTER-TEMPS -35.)
(CONSTANT *:PROCEDURE-FLAGS -34.)
(CONSTANT *:PROCEDURE-WRITABLE-ITEMS-FLAG 1.)
(CONSTANT *:PROCEDURE-DEBUGGING-PLIST -33.)
(CONSTANT *:PROCEDURE-TIMING-VECTOR -32.)
(CONSTANT *:PROCEDURE-MARKABLE-ITEMS -31.)
(CONSTANT *:CATCH-FRAME-LINK 0.)
(CONSTANT *:CATCH-FRAME-TP 1.)
(CONSTANT *:CATCH-FRAME-CP 2.)
(CONSTANT *:CATCH-FRAME-FP 3.)
(CONSTANT *:CATCH-FRAME-SP 4.)
(CONSTANT *:CATCH-FRAME-TAG 5.)
(CONSTANT *:CATCH-FRAME-FUNCTION 6.)
(CONSTANT *:CATCH-FRAME-CALL-SIGNATURE 7.)
(CONSTANT *:CATCH-FRAME-RETURN-PC 8.)
(CONSTANT *:CATCH-FRAME-SIZE 9.)
(CONSTANT *:STACK-GROUP-DYNAMIC-FRAME -31.)
(CONSTANT *:STACK-GROUP-CATCH-FRAME -30.)
(CONSTANT *:STACK-GROUP-STATE -29.)
(CONSTANT *:STACK-GROUP-EXHAUSTED-STATE 0.)
(CONSTANT *:STACK-GROUP-ACTIVE-STATE 1.)
(CONSTANT *:STACK-GROUP-AWAITING-RETURN-STATE 2.)
(CONSTANT *:STACK-GROUP-AWAITING-CALL-STATE 3.)
(CONSTANT *:STACK-GROUP-AWAITING-ERROR-STATE 4.)
(CONSTANT *:STACK-GROUP-AWAITING-START-STATE 5.)
(CONSTANT *:STACK-GROUP-TO-RESUME -28.)
(CONSTANT *:STACK-GROUP-PROGRAM-STATUS -27.)
(CONSTANT *:STACK-GROUP-SEGMENT -26.)
(CONSTANT *:STACK-GROUP-SEGMENT-END -25.)
(CONSTANT *:STACK-GROUP-SAVED-REGISTERS -24.)
(CONSTANT *:STACK-GROUP-SIZE 47.)
(CONSTANT *:FRAME-RETURN-VALUE (* -32. 4))
(CONSTANT *:FRAME-SPARE-PC-SLOT (* -31. 4))
(CONSTANT *:FRAME-OLD-TP (* -30. 4))
(CONSTANT *:FRAME-OLD-CP (* -29. 4))
(CONSTANT *:FRAME-OLD-FP (* -28. 4))
(CONSTANT *:FRAME-RETURN-PC (* -27. 4))
(CONSTANT *:FRAME-ARGUMENTS (* -26. 4))
(CONSTANT *:CALL-SIGNATURE-NUMERIC-VALUED 32.)
(CONSTANT *:CALL-SIGNATURE-MULTIPLE-VALUE 16.)
(CONSTANT *:REGISTER-FIRST-MARKED 16.)
(CONSTANT *:REGISTER-NUMBER-MARKED 10.)
(CONSTANT *:REGISTER-R0 0.) (CONSTANT *:REGISTER-SR0 0.)
(CONSTANT *:REGISTER-R1 1.) (CONSTANT *:REGISTER-SR1 1.)
(CONSTANT *:REGISTER-R2 2.) (CONSTANT *:REGISTER-SR2 2.)
(CONSTANT *:REGISTER-R3 3.) (CONSTANT *:REGISTER-PC 3.)
(CONSTANT *:REGISTER-SIZEREG 3.)
(CONSTANT *:REGISTER-RTA 4.)
(CONSTANT *:REGISTER-RTA1 5.)
(CONSTANT *:REGISTER-RTB 6.)
(CONSTANT *:REGISTER-RTB1 7.)
(CONSTANT *:REGISTER-I 8.)
(CONSTANT *:REGISTER-J 9.)
(CONSTANT *:REGISTER-K 10.)
(CONSTANT *:REGISTER-L 11.)
(CONSTANT *:REGISTER-M 12.)
(CONSTANT *:REGISTER-N 13.)
(CONSTANT *:REGISTER-Q 14.)
(CONSTANT *:REGISTER-R 15.)
(CONSTANT *:REGISTER-A 16.)
(CONSTANT *:REGISTER-B 17.)
(CONSTANT *:REGISTER-C 18.)
(CONSTANT *:REGISTER-V 19.)
(CONSTANT *:REGISTER-W 20.)
(CONSTANT *:REGISTER-X 21.)
(CONSTANT *:REGISTER-Y 22.)
(CONSTANT *:REGISTER-Z 23.)
(CONSTANT *:REGISTER-T1 24.)
(CONSTANT *:REGISTER-T2 25.)
(CONSTANT *:REGISTER-SG 26.)
(CONSTANT *:REGISTER-SQ 27.)
(CONSTANT *:REGISTER-TP 28.)
(CONSTANT *:REGISTER-CP 29.)
(CONSTANT *:REGISTER-FP 30.)
(CONSTANT *:REGISTER-SP 31.)
(CONSTANT *:REGISTER-QUANTITY 32.)
(CONSTANT *:REGISTER-TABLE
'((R0 . *:REGISTER-R0)
(SR0 . *:REGISTER-SR0)
(R1 . *:REGISTER-R1)
(SR1 . *:REGISTER-SR1)
(R2 . *:REGISTER-R2)
(SR2 . *:REGISTER-SR2)
(R3 . *:REGISTER-R3)
(PC . *:REGISTER-PC)
(SIZEREG . *:REGISTER-SIZEREG)
(RTA . *:REGISTER-RTA)
(RTA1 . *:REGISTER-RTA1)
(RTB . *:REGISTER-RTB)
(RTB1 . *:REGISTER-RTB1)
(I . *:REGISTER-I)
(J . *:REGISTER-J)
(K . *:REGISTER-K)
(L . *:REGISTER-L)
(M . *:REGISTER-M)
(N . *:REGISTER-N)
(Q . *:REGISTER-Q)
(R . *:REGISTER-R)
(A . *:REGISTER-A)
(B . *:REGISTER-B)
(C . *:REGISTER-C)
(V . *:REGISTER-V)
(W . *:REGISTER-W)
(X . *:REGISTER-X)
(Y . *:REGISTER-Y)
(Z . *:REGISTER-Z)
(T1 . *:REGISTER-T1)
(T2 . *:REGISTER-T2)
(SG . *:REGISTER-SG)
(SQ . *:REGISTER-SQ)
(TP . *:REGISTER-TP)
(CP . *:REGISTER-CP)
(FP . *:REGISTER-FP)
(SP . *:REGISTER-SP)))
(CONSTANT *:SQ-T (* -32. 4))
(CONSTANT *:SQ-NIL (* -31. 4)) ;must follow *:SQ-T
(CONSTANT *:SQ-NIL-2 (* -30. 4)) ;must follow *:SQ-NIL
(CONSTANT *:SQ-MIN-FIXNUM (* -29. 4))
(CONSTANT *:SQ-MAX-FIXNUM (* -28. 4)) ;must follow *:SQ-MIN-FIXNUM
(CONSTANT *:SQ-UNDEFINED (* -27. 4))
(CONSTANT *:SQ-UNDEFINED-2 (* -26. 4)) ;must be last one
(CONSTANT *:SQ-ALLOCATE-LOCK (* -25. 4))
(CONSTANT *:SQ-GC-LOCK (* -24. 4))
(CONSTANT *:SQ-IO-TRANSFERS (* -23. 4))
(CONSTANT *:SQ-BOTTOM-TABLE (* -22. 4))
(CONSTANT *:SQ-TOP-TABLE (* -21. 4))
(CONSTANT *:SQ-SYMBOL-FUNCTION-CELL (* -20. 4))
(CONSTANT *:SQ-WRONG-TYPE-OF-FUNCTION (* 32. 4)) ;these two must be
(CONSTANT *:SQ-WRONG-NUMBER-OF-ARGUMENTS (* 33. 4)) ;in this order
(CONSTANT *:SQ-SPECIAL-LOOKUP (* 34. 4))
(CONSTANT *:SQ-CONS (* 35. 4)) ;these ten must be
(CONSTANT *:SQ-LIST (* 36. 4)) ;in this order
(CONSTANT *:SQ-LIST* (* 37. 4))
(CONSTANT *:SQ-SINGLE-FLONUM-CONS (* 38. 4))
(CONSTANT *:SQ-DOUBLE-FLONUM-CONS (* 39. 4))
(CONSTANT *:SQ-TETRA-FLONUM-CONS (* 40. 4))
(CONSTANT *:SQ-HALF-COMPLEXNUM-CONS (* 41. 4))
(CONSTANT *:SQ-SINGLE-COMPLEXNUM-CONS (* 42. 4))
(CONSTANT *:SQ-DOUBLE-COMPLEXNUM-CONS (* 43. 4))
(CONSTANT *:SQ-TETRA-COMPLEXNUM-CONS (* 44. 4))
(CONSTANT *:SQ-ALLOCATE-IMPURE (* 45. 4))
(CONSTANT *:SQ-RETURN-VECTOR-EASY-CASE (* 46. 4))
(CONSTANT *:SQ-RETURN-VECTOR-HARD-CASE (* 47. 4))
(CONSTANT *:SQ-RETURN-LIST (* 48. 4))
(CONSTANT *:SQ-GET-MORE-STORAGE (* 49. 4))
(CONSTANT *:SQ-VECTOR-LENGTH 92.)
(CONSTANT *:SQ-VECTOR-MIDPOINT 32.)
(CONSTANT *:MAX-FIXNUM (SUB1 (EXPT 2. 31.)))
(CONSTANT *:MIN-FIXNUM (MINUS (EXPT 2. 31.)))
(CONSTANT *:MAX-SMALLNUM (SUB1 (EXPT 2. 18.)))
(CONSTANT *:MIN-SMALLNUM (MINUS (EXPT 2. 18.)))
(COMMENT
|Do not try to use these yet -- they cannot possibly work in MacLISP|
(CONSTANT *:MAX-POS-HALF-FLONUM ) ;a half-flonum
(CONSTANT *:MIN-POS-HALF-FLONUM ) ;a half-flonum
(CONSTANT *:MIN-NEG-HALF-FLONUM ) ;a half-flonum
(CONSTANT *:MAX-NEG-HALF-FLONUM ) ;a half-flonum
(CONSTANT *:POS-HALF-FLONUM-OVERFLOW ) ;a half-flonum
(CONSTANT *:POS-HALF-FLONUM-UNDERFLOW ) ;a half-flonum
(CONSTANT *:NEG-HALF-FLONUM-UNDERFLOW ) ;a half-flonum
(CONSTANT *:NEG-HALF-FLONUM-OVERFLOW ) ;a half-flonum
(CONSTANT *:HALF-FLONUM-NOT-A-NUMBER ) ;a half-flonum
(CONSTANT *:MAX-POS-SMALL-FLONUM ) ;a small-flonum
(CONSTANT *:MIN-POS-SMALL-FLONUM ) ;a small-flonum
(CONSTANT *:MIN-NEG-SMALL-FLONUM ) ;a small-flonum
(CONSTANT *:MAX-NEG-SMALL-FLONUM ) ;a small-flonum
(CONSTANT *:POS-SMALL-FLONUM-OVERFLOW ) ;a small-flonum
(CONSTANT *:POS-SMALL-FLONUM-UNDERFLOW ) ;a small-flonum
(CONSTANT *:NEG-SMALL-FLONUM-UNDERFLOW ) ;a small-flonum
(CONSTANT *:NEG-SMALL-FLONUM-OVERFLOW ) ;a small-flonum
(CONSTANT *:SMALL-FLONUM-NOT-A-NUMBER ) ;a small-flonum
(CONSTANT *:MAX-POS-FLONUM ) ;a flonum
(CONSTANT *:MIN-POS-FLONUM ) ;a flonum
(CONSTANT *:MIN-NEG-FLONUM ) ;a flonum
(CONSTANT *:MAX-NEG-FLONUM ) ;a flonum
(CONSTANT *:POS-FLONUM-OVERFLOW ) ;a flonum
(CONSTANT *:POS-FLONUM-UNDERFLOW ) ;a flonum
(CONSTANT *:NEG-FLONUM-UNDERFLOW ) ;a flonum
(CONSTANT *:NEG-FLONUM-OVERFLOW ) ;a flonum
(CONSTANT *:FLONUM-NOT-A-NUMBER ) ;a flonum
(CONSTANT *:EOF-CHARACTER ???)
) ;end of comment out
(CONSTANT *:CHAR-CODE-LIMIT (EXPT 2. 9.))
(CONSTANT *:CHAR-FONT-LIMIT (EXPT 2. 9.))
(CONSTANT *:CHAR-BITS-LIMIT (EXPT 2. 4.))
(CONSTANT *:CHAR-CONTROL-BIT 1.)
(CONSTANT *:CHAR-META-BIT 2.)
(CONSTANT *:CHAR-HYPER-BIT 4.)
(CONSTANT *:CHAR-SUPER-BIT 8.)
(CONSTANT *:BITS-PER-Q 36.)
(CONSTANT *:BITS-PER-FIXNUM 32.)
(CONSTANT *:BITS-PER-CHARACTER 31.)
(CONSTANT *:BITS-PER-STRING-CHARACTER 9.)
(CONSTANT *:BITS-PER-BYTE 9.)
(CONSTANT *:BYTES-PER-Q 4.)
(CONSTANT *:BYTES-PER-QW-FIXNUM 1.)
(CONSTANT *:BYTES-PER-HW-FIXNUM 2.)
(CONSTANT *:BYTES-PER-SW-FIXNUM 4.)
(CONSTANT *:BYTES-PER-DW-FIXNUM 8.)
(CONSTANT *:BYTES-PER-HALF-FLONUM 2.)
(CONSTANT *:BYTES-PER-SINGLE-FLONUM 4.)
(CONSTANT *:BYTES-PER-DOUBLE-FLONUM 8.)
(CONSTANT *:BYTES-PER-TETRA-FLONUM 16.)
(CONSTANT *:BYTES-PER-HALF-COMPLEXNUM 4.)
(CONSTANT *:BYTES-PER-SINGLE-COMPLEXNUM 8.)
(CONSTANT *:BYTES-PER-DOUBLE-COMPLEXNUM 16.)
(CONSTANT *:BYTES-PER-TETRA-COMPLEXNUM 32.)
(CONSTANT *:BYTES-PER-HALF-COMPLEXINT 4.)
(CONSTANT *:BYTES-PER-SINGLE-COMPLEXINT 8.)
(CONSTANT *:WORDS-PER-SINGLE-FLONUM 1.)
(CONSTANT *:WORDS-PER-DOUBLE-FLONUM 2.)
(CONSTANT *:WORDS-PER-TETRA-FLONUM 4.)
(CONSTANT *:WORDS-PER-HALF-COMPLEXNUM 1.)
(CONSTANT *:WORDS-PER-SINGLE-COMPLEXNUM 2.)
(CONSTANT *:WORDS-PER-DOUBLE-COMPLEXNUM 4.)
(CONSTANT *:WORDS-PER-TETRA-COMPLEXNUM 8.)
(CONSTANT *:WORDS-PER-HALF-COMPLEXINT 1.)
(CONSTANT *:WORDS-PER-SINGLE-COMPLEXINT 2.)
(CONSTANT *:BITS-PER-HALF-FLONUM-MANTISSA 13.) ;counting hidden bit
(CONSTANT *:BITS-PER-HALF-FLONUM-EXPONENT 5.)
(CONSTANT *:BITS-PER-SMALL-FLONUM-MANTISSA 27.)
(CONSTANT *:BITS-PER-SMALL-FLONUM-EXPONENT 9.)
(CONSTANT *:BITS-PER-FLONUM-MANTISSA 57.)
(CONSTANT *:BITS-PER-FLONUM-EXPONENT 15.)
(CONSTANT *:MACHINE-INPUT-BASE 8.)
(CONSTANT *:PNAME-BUFFER-LENGTH 200.)
(CONSTANT *:OBARRAY-LENGTH 500.)
;;; here are the real quantities. for the simulator we use fake quantities.
;(CONSTANT *:SEGMENTITO-SIZE 65536.) ; qtr words
;(CONSTANT *:LOG-SEGMENTITO-SIZE 16.)
;(CONSTANT *:MINUS-LOG-SEGMENTITO-SIZE -16.)
;(CONSTANT *:SEGMENTITOS-PER-ADDRESS-SPACE 32768.)
;(CONSTANT *:LOG-SEGMENTITOS-PER-ADDRESS-SPACE 15.)
(CONSTANT *:SEGMENTITO-SIZE 32768.) ; qtr words
(CONSTANT *:LOG-SEGMENTITO-SIZE 15.)
(CONSTANT *:MINUS-LOG-SEGMENTITO-SIZE -15.)
(CONSTANT *:SEGMENTITOS-PER-ADDRESS-SPACE 1024.)
(CONSTANT *:LOG-SEGMENTITOS-PER-ADDRESS-SPACE 10.)
;;; storage allocation constants
(CONSTANT *:SID-UNALLOCATED 0.)
(CONSTANT *:SID-PURE-INSTRUCTION 1.)
(CONSTANT *:SID-IMPURE-INSTRUCTION 2.)
(CONSTANT *:SID-NEW-INSTRUCTION 3.)
(CONSTANT *:SID-PURE-DATA 9.)
(CONSTANT *:SID-IMPURE-DATA 10.)
(CONSTANT *:SID-NEW-DATA 11.)
(CONSTANT *:SID-SEMIPURE 12.)
(CONSTANT *:SID-STACK 13.)
(CONSTANT *:SID-EXTERNAL 15.)
(CONSTANT *:SID-TABLE-SIZE 16.)
;;; data segments must have approx 32 free words at the end, in case a
;;; a procedure header with an offset register is nearby
(CONSTANT *:EOS-DATA-OFFSET (* 4. -32.))
(CONSTANT *:EOS-INSTRUCTION-OFFSET 0.)
;;; used by the garbage collector
(CONSTANT *:GC-DEFAULT-LOG-SEGMENTITOS-PER-SEGMENT 0.) ; may get bigger latter
(CONSTANT *:GC-SPACE-ID-BITS 15.)
(CONSTANT *:GC-LOG-SEGMENT-SIZE-BITS 240.)
(CONSTANT *:GC-LOG-SEGMENT-SIZE-LSH -4.)
(CONSTANT *:GC-NEXT-SEGMENT-IN-SPACE-PTR-BITS 8388352.)
(CONSTANT *:GC-NEXT-SEGMENT-IN-SPACE-PTR-LSH -9.)
(CONSTANT *:GC-MORE-SEGMENTS-IN-SPACE-BIT 8388608.)
(CONSTANT *:GC-PURIFIED-BIT 16777216.)
(CONSTANT *:GC-STACK-MARKED-BIT 33554432.)
;;; access mode constants and macros
(CONSTANT *:GC-ACCESS-INSTRUCTIONS-BIT 32.)
(CONSTANT *:GC-ACCESS-DATA-BIT 16.)
(CONSTANT *:GC-ACCESS-READ-ALLOCATE-BIT 8.)
(CONSTANT *:GC-ACCESS-WRITE-ALLOCATE-BIT 4.)
(CONSTANT *:GC-ACCESS-WRITE-ONLY-BIT 2.)
(CONSTANT *:GC-ACCESS-WRITE-THROUGH-BIT 1.)
(CONSTANT *:GC-ACCESS-INSTRUCTION 56.)
(CONSTANT *:GC-ACCESS-PURE-DATA 24.)
(CONSTANT *:GC-ACCESS-IMPURE-DATA 28.)
(CONSTANT *:GC-ACCESS-WRITING-INSTRUCTIONS 57.)
;;; constants for the "hokey" io system. these will change later.
(CONSTANT *:STREAM-HEADER 0.)
(CONSTANT *:STREAM-PATH-NAME 1.)
(CONSTANT *:STREAM-DIRECTION 2.)
(CONSTANT *:STREAM-TYPE 3.)
(CONSTANT *:STREAM-FILE-LENGTH 4.)
(CONSTANT *:STREAM-CHANNEL 5.)
(CONSTANT *:STREAM-OPEN 6.)
(CONSTANT *:STREAM-BUFFER-POINT 7.)
(CONSTANT *:STREAM-BUFFER 8.)
(CONSTANT *:STREAM-HEADER-LENGTH 9.)
(CONSTANT *:STREAM-BUFFER-LENGTH 256.)
;;; constants for the "hokey" IOMEM interface - most are contained
;;; directly in the low level LAP file IOMEM.LAP
(CONSTANT *:IOM-OP-RD 1.)
(CONSTANT *:IOM-OP-WR 2.)
(CONSTANT *:CHANNEL-QUANTITY 16.)
;;; rounding modes
(CONSTANT *:ROUND-MODE-FL 0.)
(CONSTANT *:ROUND-MODE-DM 1.)
(CONSTANT *:ROUND-MODE-CL 4.)
(CONSTANT *:ROUND-MODE-ST 10.)